#include "cd4067.h"
volatile uint8_t current_channel = 0; // 当前通道，初始为0
uint8_t CD4067_GetChannel(void)
{
    return current_channel;
}

void CD4067_SetChannel(uint8_t channel)
{
    switch (channel)
    { // A3    A2    A1    A0
    case 7:
        DL_GPIO_clearPins(SELECTOR_GRP_PORT, SELECTOR_GRP_A_3_PIN); // 0
        DL_GPIO_clearPins(SELECTOR_GRP_PORT, SELECTOR_GRP_A_2_PIN); // 0
        DL_GPIO_clearPins(SELECTOR_GRP_PORT, SELECTOR_GRP_A_1_PIN); // 0
        DL_GPIO_clearPins(SELECTOR_GRP_PORT, SELECTOR_GRP_A_0_PIN); // 0
        break;
    case 6:
        DL_GPIO_clearPins(SELECTOR_GRP_PORT, SELECTOR_GRP_A_3_PIN); // 0
        DL_GPIO_clearPins(SELECTOR_GRP_PORT, SELECTOR_GRP_A_2_PIN); // 0
        DL_GPIO_clearPins(SELECTOR_GRP_PORT, SELECTOR_GRP_A_1_PIN); // 0
        DL_GPIO_setPins(SELECTOR_GRP_PORT, SELECTOR_GRP_A_0_PIN);   // 1
        break;
    case 5:
        DL_GPIO_clearPins(SELECTOR_GRP_PORT, SELECTOR_GRP_A_3_PIN); // 0
        DL_GPIO_clearPins(SELECTOR_GRP_PORT, SELECTOR_GRP_A_2_PIN); // 0
        DL_GPIO_setPins(SELECTOR_GRP_PORT, SELECTOR_GRP_A_1_PIN);   // 1
        DL_GPIO_clearPins(SELECTOR_GRP_PORT, SELECTOR_GRP_A_0_PIN); // 0
        break;
    case 4:
        DL_GPIO_clearPins(SELECTOR_GRP_PORT, SELECTOR_GRP_A_3_PIN); // 0
        DL_GPIO_clearPins(SELECTOR_GRP_PORT, SELECTOR_GRP_A_2_PIN); // 0
        DL_GPIO_setPins(SELECTOR_GRP_PORT, SELECTOR_GRP_A_1_PIN);   // 1
        DL_GPIO_setPins(SELECTOR_GRP_PORT, SELECTOR_GRP_A_0_PIN);   // 1
        break;
    case 3:
        DL_GPIO_clearPins(SELECTOR_GRP_PORT, SELECTOR_GRP_A_3_PIN); // 0
        DL_GPIO_setPins(SELECTOR_GRP_PORT, SELECTOR_GRP_A_2_PIN);   // 1
        DL_GPIO_clearPins(SELECTOR_GRP_PORT, SELECTOR_GRP_A_1_PIN); // 0
        DL_GPIO_clearPins(SELECTOR_GRP_PORT, SELECTOR_GRP_A_0_PIN); // 0
        break;
    case 2:
        DL_GPIO_clearPins(SELECTOR_GRP_PORT, SELECTOR_GRP_A_3_PIN); // 0
        DL_GPIO_setPins(SELECTOR_GRP_PORT, SELECTOR_GRP_A_2_PIN);   // 1
        DL_GPIO_clearPins(SELECTOR_GRP_PORT, SELECTOR_GRP_A_1_PIN); // 0
        DL_GPIO_setPins(SELECTOR_GRP_PORT, SELECTOR_GRP_A_0_PIN);   // 1
        break;
    case 1:
        DL_GPIO_clearPins(SELECTOR_GRP_PORT, SELECTOR_GRP_A_3_PIN); // 0
        DL_GPIO_setPins(SELECTOR_GRP_PORT, SELECTOR_GRP_A_2_PIN);   // 1
        DL_GPIO_setPins(SELECTOR_GRP_PORT, SELECTOR_GRP_A_1_PIN);   // 1
        DL_GPIO_clearPins(SELECTOR_GRP_PORT, SELECTOR_GRP_A_0_PIN); // 0
        break;
    case 0:
        DL_GPIO_clearPins(SELECTOR_GRP_PORT, SELECTOR_GRP_A_3_PIN); // 0
        DL_GPIO_setPins(SELECTOR_GRP_PORT, SELECTOR_GRP_A_2_PIN);   // 1
        DL_GPIO_setPins(SELECTOR_GRP_PORT, SELECTOR_GRP_A_1_PIN);   // 1
        DL_GPIO_setPins(SELECTOR_GRP_PORT, SELECTOR_GRP_A_0_PIN);   // 1
        break;
    case 15:
        DL_GPIO_setPins(SELECTOR_GRP_PORT, SELECTOR_GRP_A_3_PIN);   // 1
        DL_GPIO_clearPins(SELECTOR_GRP_PORT, SELECTOR_GRP_A_2_PIN); // 0
        DL_GPIO_clearPins(SELECTOR_GRP_PORT, SELECTOR_GRP_A_1_PIN); // 0
        DL_GPIO_clearPins(SELECTOR_GRP_PORT, SELECTOR_GRP_A_0_PIN); // 0
        break;
    case 14:
        DL_GPIO_setPins(SELECTOR_GRP_PORT, SELECTOR_GRP_A_3_PIN);   // 1
        DL_GPIO_clearPins(SELECTOR_GRP_PORT, SELECTOR_GRP_A_2_PIN); // 0
        DL_GPIO_clearPins(SELECTOR_GRP_PORT, SELECTOR_GRP_A_1_PIN); // 0
        DL_GPIO_setPins(SELECTOR_GRP_PORT, SELECTOR_GRP_A_0_PIN);   // 1
        break;
    case 13:
        DL_GPIO_setPins(SELECTOR_GRP_PORT, SELECTOR_GRP_A_3_PIN);   // 1
        DL_GPIO_clearPins(SELECTOR_GRP_PORT, SELECTOR_GRP_A_2_PIN); // 0
        DL_GPIO_setPins(SELECTOR_GRP_PORT, SELECTOR_GRP_A_1_PIN);   // 1
        DL_GPIO_clearPins(SELECTOR_GRP_PORT, SELECTOR_GRP_A_0_PIN); // 0
        break;
    case 12:
        DL_GPIO_setPins(SELECTOR_GRP_PORT, SELECTOR_GRP_A_3_PIN);   // 1
        DL_GPIO_clearPins(SELECTOR_GRP_PORT, SELECTOR_GRP_A_2_PIN); // 0
        DL_GPIO_setPins(SELECTOR_GRP_PORT, SELECTOR_GRP_A_1_PIN);   // 1
        DL_GPIO_setPins(SELECTOR_GRP_PORT, SELECTOR_GRP_A_0_PIN);   // 1
        break;
    case 11:
        DL_GPIO_setPins(SELECTOR_GRP_PORT, SELECTOR_GRP_A_3_PIN);   // 1
        DL_GPIO_setPins(SELECTOR_GRP_PORT, SELECTOR_GRP_A_2_PIN);   // 1
        DL_GPIO_clearPins(SELECTOR_GRP_PORT, SELECTOR_GRP_A_1_PIN); // 0
        DL_GPIO_clearPins(SELECTOR_GRP_PORT, SELECTOR_GRP_A_0_PIN); // 0
        break;
    case 10:
        DL_GPIO_setPins(SELECTOR_GRP_PORT, SELECTOR_GRP_A_3_PIN);   // 1
        DL_GPIO_setPins(SELECTOR_GRP_PORT, SELECTOR_GRP_A_2_PIN);   // 1
        DL_GPIO_clearPins(SELECTOR_GRP_PORT, SELECTOR_GRP_A_1_PIN); // 0
        DL_GPIO_setPins(SELECTOR_GRP_PORT, SELECTOR_GRP_A_0_PIN);   // 1
        break;
    case 9:
        DL_GPIO_setPins(SELECTOR_GRP_PORT, SELECTOR_GRP_A_3_PIN);   // 1
        DL_GPIO_setPins(SELECTOR_GRP_PORT, SELECTOR_GRP_A_2_PIN);   // 1
        DL_GPIO_setPins(SELECTOR_GRP_PORT, SELECTOR_GRP_A_1_PIN);   // 1
        DL_GPIO_clearPins(SELECTOR_GRP_PORT, SELECTOR_GRP_A_0_PIN); // 0
        break;
    case 8:
        DL_GPIO_setPins(SELECTOR_GRP_PORT, SELECTOR_GRP_A_3_PIN); // 1
        DL_GPIO_setPins(SELECTOR_GRP_PORT, SELECTOR_GRP_A_2_PIN); // 1
        DL_GPIO_setPins(SELECTOR_GRP_PORT, SELECTOR_GRP_A_1_PIN); // 1
        DL_GPIO_setPins(SELECTOR_GRP_PORT, SELECTOR_GRP_A_0_PIN); // 1
        break;
    default:
        break;
    }
    current_channel = channel;
}
